From 9e2bd82a72d79de0fc2abc457b8500e7264c2e46 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Tue, 10 Jun 2008 15:08:06 +0900 Subject: [PATCH] [IA64] hypervisor needs to turn off psr.i after PAL_HALT_LIGHT psr.i must be set to 0 on PAL entry and must be unchanged on PAL exit. But do_block() turns on psr.i. So we need to set it off at exit of PAL_HALT_LIGHT. Signed-off-by: Akio Takebe --- xen/arch/ia64/xen/hypercall.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xen/arch/ia64/xen/hypercall.c b/xen/arch/ia64/xen/hypercall.c index ea64cd24a8..29268ab128 100644 --- a/xen/arch/ia64/xen/hypercall.c +++ b/xen/arch/ia64/xen/hypercall.c @@ -173,6 +173,14 @@ ia64_hypercall(struct pt_regs *regs) /* do_block only pends a softirq */ do_softirq(); stop_timer(&v->arch.hlt_timer); + /* do_block() calls + * local_event_delivery_enable(), + * but PALL CALL must be called with + * psr.i = 0 and psr.i is unchanged. + * SDM vol.2 Part I 11.10.2 + * PAL Calling Conventions. + */ + local_event_delivery_disable(); } regs->r8 = 0; regs->r9 = 0; -- 2.30.2